package com.such.kit.easyparam;

import java.util.ArrayList;
import java.util.List;
import com.such.kit.validate.ValidateCommons;

/**
 * @作者 SUCH
 * @日期 2017-3-14 下午7:24:54
 * @描述 用于快速构建参数 list
 * @param <T>
 */
public class ParamList<T> extends ArrayList<T> {

	private static final long serialVersionUID = -2291735808859295239L;

	/**
	 * <p>方法名：addParam</p>
	 * <p>描述：添加参数</p>
	 * @param value 值
	 * @return 当前 ParamList
	 */
	public ParamList<T> addParam(T value) {
		this.add(value);
		return this;
	}

	/**
	 * <p>方法名：addAllParam</p>
	 * <p>描述：添加参数集</p>
	 * @param values 值列表
	 * @return 当前 ParamList
	 */
	public ParamList<T> addAllParam(List<? extends T> values) {
		if (ValidateCommons.isNotEmpty(values)) {
			this.addAll(values);
		}
		return this;
	}

	/**
	 * <pre>
	 * 从 list 中获取指定值
	 * 当指定值为空，则取默认值
	 * </pre>
	 * @param key 键
	 * @param list 数据集
	 * @param defaultValue 默认值
	 * @return 值
	 */
	public static <T> T getParam(int index, List<T> list, T defaultValue) {
		T value = null;
		if (ValidateCommons.isNotEmpty(list)) {
			if (index != -1 && index < list.size()) {
				value = list.get(index);
			}
			if (ValidateCommons.isEmpty(value)) {
				value = defaultValue;
			}
		} else {
			value = defaultValue;
		}
		return value;
	}

	/**
	 * <pre>
	 * 从 list 中获取指定值
	 * 当指定值为空，则取默认值
	 * </pre>
	 * @param key 键
	 * @param list 数据集
	 * @return 值
	 */
	public static <T> T getParam(int index, List<T> list) {
		T value = null;
		if (ValidateCommons.isNotEmpty(list)) {
			if (index != -1 && index < list.size()) {
				value = list.get(index);
			}
		}
		return value;
	}

}
